package Test;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt(); // 读取学生人数
        int m = scanner.nextInt(); // 读取组数
        int[] a = new int[n];
        Map<Integer, Integer> countMap = new HashMap<>();

        // 统计每个声部的人数
        for (int i = 0; i < n; i++) {
            a[i] = scanner.nextInt();
            countMap.put(a[i], countMap.getOrDefault(a[i], 0) + 1);
        }
        scanner.close();

        // 如果声部的种类数少于组数，则无法分组
        if (countMap.size() < m) {
            System.out.println(-1);
            return;
        }

        int max = 0;
        int[] counts = new int[m];
        int index = 0;

        // 将每个声部的人数分配到m个组中，尽量平均分配
        for (int count : countMap.values()) {
            counts[index++] = count;
            if (index == m) {
                // 对当前分配的组进行排序，并重新分配
                java.util.Arrays.sort(counts);
                max = Math.max(max, counts[0]);
                index = 0;
            }
        }

        // 如果还有剩余的声部没有分配完毕
        if (index > 0) {
            java.util.Arrays.sort(counts, 0, index);
            int temp = index;
            for (int i = 0; i < temp; i++) {
                max = Math.max(max, counts[i] + (counts[m - 1] - counts[i]) / (temp - i));
            }
        }

        System.out.println(max);
    }
}
